Shell 语言--字符提取

# Python 和 Perl 字符提取

在说shell 之前,我想有必要说一下其他语言的字符提取如python, perl

对于Python 来说,如果我想提取 “,” 左边的字符、:

#!/bin/python
a = "172.17.3.20"
# 截取“17”
# 这是把split作为a的一个子函数,可以调用,和Perl 和 shell 不同
b = a.split('.')[1]

对于 perl 来说,最简单的应该是:

#!/bin/perl
# 一定记得每次写之前要把字符串前面加 $,而且不要忘了加;
$a = "172.17.3.20";
# 与python 不同,$a是写在split后面的,意思是用split,先定义分隔符,然后定义要分割的对象
# 记住分割完后的是一个列表,所以用 @, 如果是$,返回的将会是列表中元素个数
@b = split(/\./,$a);
# 如果要输出 @b中间的东西用 foreach $s_ (@b) 来形容
# 和python 的“:”不同,perl 的函数需要括起来 {}
foreach $s_ (@b) {
	# 这个和python 2一样,都可以用 "" 来表示
	print "$s_";
}

好了,一些关于 python 和 perl 的皮毛知识已经讲完了,该说一下 shell 了

Shell 字符提取

对于 shell 来说, 字符提取一共分为一下几类

  1. 从左指定某个位置的字符出发开始提取
  2. 从右指定某个位置的字符出发开始提取
  3. 从左指定某个字符出发开始提取
  4. 从右指定某个字符出发开始提取

对了还有一点需要记住,不同于perl和python,shell在输入的时候不能有空格! 因为shell 本质上是在linux下的终端执行的,如果有空格会造成不必要的麻烦。

从左指定某个位置的字符出发开始提取

#!/bin/bash
a="172.20.3.18";
# 从左往右数第四个字符开始,到第8个(算上'.')
b=${a:3:4};
echo $b;

要记得 是 写 在 外 面 的 , 相 似 的 表 达 有 很 多 , 比 如 是写在 {}外面的,相似的表达有很多,比如 {fun[@]}等。

还有 连接字符和截断信息的是 :

从右指定某个位置的字符出发开始提取

#!/bin/bash
a="172.20.3.18";
# 从右往左数第八个字符开始,到第三个(算上'.')
# .20.3
b=${a:0-8:5};
echo $b;

意思是 0-n

从左指定某个字符出发开始提取

#!/bin/bash
a="172.20.3.18";
# 得到 第一个 2 以后右边的所有字符
b=${a#*2};
# 得到 最后一个 2 以后的右边的所有字符
b=${a##*2};

想象 $ 是中立的,相当于0,然后# 在 $ 左边,所以是从左向右,往右数

从右指定某个字符出发开始提取

那么同理,%是在$ 右边的,那就是从右往左推,这样就好记一点
凡是涉及 %的,一律在字符右边画"“,比如”${cnt%2}"
凡是涉及#的,一律在字符左边画星号,比如 ${cnt#*2}

#!/bin/bash
a="172.20.3.18";
# 从左往右得到 第最后一个 2 以后左边边的所有字符
# 172.
b=${a%2*};
# 从左往右得到 第一个 2 以后的左边的所有字符
# 17
b=${a%%2*};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值